package clienteWeb;

import beans.*;
import interfaz.TDAOficinaDeVenta;
import interfaz.TDACasaCentral;

import java.rmi.Naming;
import java.rmi.RemoteException;
import java.util.List;

import javax.swing.JOptionPane;

public class ClienteWeb 
{
	private static ClienteWeb instancia;
	
	TDAOficinaDeVenta rmiODV;
	TDACasaCentral rmiCPR;

	public static void main(String[] args)
	{
		new ClienteWeb();
	}

	public static ClienteWeb getInstancia()
	{
		if (instancia==null)
		{
			instancia = new ClienteWeb();
		}
		
		return instancia;
	}

	public ClienteWeb()
	{
		instancia = this;
		getStub();
	}

	private boolean getStub()
	{
		try 
		{
			rmiODV = (TDAOficinaDeVenta)Naming.lookup ("//localhost/rmi/oficinaDeVenta");
			rmiCPR = (TDACasaCentral)Naming.lookup ("//localhost/rmi/casaCentral");
			
			System.out.println("Conectado");
			
			return true;
		} 
		catch (Exception e)
		{
			System.out.println("Error de Conexion");
			JOptionPane.showMessageDialog(null, "Error al intentarse conectar");
		}
		return false;
	}

	/**
	 * Obtener Rodamiento por COdigoSKF
	 * @param codigoSKF
	 * @return
	 */
	public RodamientoBean consultarRodamiento (String codigoSKF ) 
	{
		try
		{
			return rmiCPR.buscarRodamiento( codigoSKF );	
		}
		catch (RemoteException e)
		{
			e.printStackTrace();
			return null;
		}	
	}
	
	/**
	 * Generar Pedido de Venta (SOlicitud De Rodamiento)
	 * @param pedidoVenta
	 * @return
	 */
	public boolean generarPedidoVenta ( PedidoVentaBean pedidoVenta)
	{
		try
		{
			return rmiODV.procesarPedidoVenta(pedidoVenta);
		}
		catch (RemoteException e)
		{
			e.printStackTrace();
		}
		
		return false;
	}
	
	/**
	 * Obtener los pedidos de venta de un cliente
	 * @param cuit
	 * @return
	 */
	
	public List<PedidoVentaBean> obtenerPedidosVentaPorCliente(String cuit)
	{
		try
		{
			return rmiCPR.obtenerPedidosVentaPorCliente(cuit);
		}
		catch (RemoteException e)
		{
			e.printStackTrace();
		}
		return null;
	}
		

	/**
	 * Se genera una cotizacion a partir de un pedido de venta 
	 * utilizando el Servicio de COmparativa de Precios.
	 * @param idPedidoVenta
	 * @return
	 */
	public CotizacionBean generarComparativaPrecios(Integer idPedidoVenta)
	{
		try
		{
			return rmiCPR.servicioComparativaDePrecios(idPedidoVenta);
		}
		catch (RemoteException e)
		{
			e.printStackTrace();
		}
		return null;
	}
	
	/**
	 *  Aprobar la cotizacion
	 * @param cotizacionBean
	 * @return
	 */
	public boolean aprobarCotizacion( CotizacionBean cotizacionBean )
	{
		try
		{
			return rmiODV.aprobarCotizacion( cotizacionBean );
		}
		catch (RemoteException e)
		{
			e.printStackTrace();
		}
		return false;
	}
}
